package com.xxx.service;

import com.xxx.common.Result;
import com.xxx.eneity.Team;
import com.xxx.eneity.noticeStatus;
import com.xxx.out.TeamInfo;
import com.xxx.out.TeamMember;
import com.xxx.out.TeamNotice;
import com.xxx.vo.*;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;

public interface TeamService {
    public Team createTeam(CreateTeamVo createTeamVo);

    public Boolean isTeamNameExist(String name, Integer contestId);
    
    public Boolean isTeamNameExist(Integer teamId, String teamName);

    public List<TeamInfo> getTeamList(Integer userId);

    public int addTeamMember(JoinTeamVo joinTeamVo);

    public boolean isMemberExist(Integer teamId, Integer userId);

    public TeamInfo getTeamInfo(Integer teamId);

    public List<TeamMember> getTeamMembers(Integer teamId);

    public List<TeamMember> getJoinMember(Integer teamId);

    public int reviewJoinRequest(Integer userId, Boolean advice, Integer teamId);

    public int addTeamNotice(TeamNoticeVo teamNoticeVo);

    public int editTeamNotice(EditNoticeVo editNoticeVo);

    public int removeTeamNotice(Integer noticeId);

    public List<TeamNotice> getTeamNoticeList(Integer teamId);

    public List<TeamNotice> getTeamNoticeStatusList(Integer teamId, Integer userId);

    public List<TeamInfo> getTeamInfoList(Integer contestId);

    public int removeTeam(Integer teamId);

    Result reviewApplication(boolean advice, Integer teamId,Integer userId);

    public boolean isMemberExistContest(Integer contestId, Integer userId);

    public TeamInfo getTeamName(Integer contestId, Integer userId);

    public List<TeamInfo> getTeamListAsCaptain(Integer userId);

    public Integer exitTeam(Integer teamId, Integer userId);

    public int readTeamNotice(Integer userId, Integer noticeId);

    public int isReadTeamNotice(Integer userId, Integer noticeId);

    public List<noticeStatus> getReadStatus(Integer noticeId);

    public int editTeam(EditTeamVo editTeamVo);

    public int kickOutMember(Integer userId, Integer teamId);

    public int replaceCaptain(Integer teamId, Integer userId);

    public Boolean isCaptain(Integer teamId, Integer userId);

    public List<UserVo> getOtherUserList(Integer teamId);

    public int addMember(Integer userId, Integer teamId);
}
